home *** CD-ROM | disk | FTP | other *** search
/ User's Choice Windows CD / User's Choice Windows CD (CMS Software)(1993).iso / win_m_p / pwez51.zip / MULTSAM2.BAS < prev    next >
BASIC Source File  |  1992-04-01  |  5KB  |  111 lines

  1. DECLARE SUB SETINPT (SCRN%, WID%, EX$, INPT%(), INPT$(), BC%)
  2. DECLARE SUB SETWIND (FST%, S%, SH%)
  3. DECLARE SUB MULTINPT (SCRN%, TOFLD%, EXIT$, AEXIT%, RKEY%, RTRN$())
  4. DECLARE SUB MAKEWIND (W%, LABEL$, TR%, LC%, WD%, NR%, ATTR%, BORDER%)
  5. DECLARE SUB PRINTW (TEXT$, R%, LC%)
  6. DECLARE SUB INPTINIT (DFORMAT%, ISDOT%, EXIT$)
  7. '***************************************************************************
  8. ' This is an example of using auto-exit fields  in MULTINPT to add      ****
  9. ' two numbers and place the sum in a protected field.                   ****
  10. '***************************************************************************
  11. '**** THIS PROGRAM MUST BE USED WITH ONE OF THE FOLLOWING LIBRARIES:    ****
  12. '***************************************************************************
  13. '**** For QB4.+ unenhanced version use QB4UNEN.QLB                      ****
  14. '**** For BASIC 7.+ unenhanced version use PDSUNEN.QLB                  ****
  15. '**** For QB4.50 enhanced version use QBALL45.QLB or QBNER45.QLB        ****
  16. '**** For QB4.00/4.00b enhanced version use QBALL40.QLB or QBNER40.QLB  ****
  17. '**** For BASIC 7.0 enhanced version use PDSALL70.QLB or PDSNER70.QLB   ****
  18. '**** For BASIC 7.1 enhanced version use PDSALL71.QLB or PDSNER71.QLB   ****
  19. '**** Load QB or QBX with the /L option using the correct library       ****
  20. '***************************************************************************
  21.  
  22. CALL SETWIND(1, 1, 7)                   ' INITIALIZE WINDOW MEMORY
  23. CALL INPTINIT(1, 1, "")                 ' INITIALIZE INPUT MEMORY
  24. COLOR 7, 0: CLS                         ' BLANK THE SCREEN
  25. DIM RTRN$(4)                            ' FOR THE FOUR FIELDS
  26.  
  27. '---------------------------------------------------------------------------
  28. ' SETINPT MUST BE CALLED FOR EACH MULTI-FIELD INPUT SCREEN
  29.  
  30. REDIM INPT%(25), INPT$(4)
  31. TOFLD% = 1: B% = 1
  32. DO
  33.   READ INPT%(B%)
  34.   IF INPT%(B%) = 9999 THEN EXIT DO
  35.   B% = B% + 1
  36.   FOR X% = 1 TO 5
  37.      READ INPT%(B%)
  38.      B% = B% + 1
  39.   NEXT
  40.   READ INPT$(TOFLD%)
  41.   TOFLD% = TOFLD% + 1
  42. LOOP
  43.  
  44. ' Auto-exit ( on change ) - auto advance - numeric with no decimal places
  45. DATA 21000,5,5,4,15,99,""                      : 'FIELD 1
  46. ' Auto-exit ( on change ) - auto advance - numeric with no decimal places
  47. DATA 21000,7,5,4,15,99,""                      : 'FIELD 2
  48. ' Protected - numeric with no decimal places
  49. DATA 100,9,5,5,15,99,""                        : 'FIELD 3
  50. ' Alpha / numeric
  51. DATA 7,11,5,15,15,99,""                        : 'FIELD 4
  52. DATA 9999                                      : '9999 MARKS END OF DATA
  53.  
  54. CALL SETINPT(1, 80, "1", INPT%(), INPT$(), 0)
  55. ERASE INPT%, INPT$
  56. '----------------------------------------------------------------------------
  57. ' THE MAIN PROGRAM
  58.  
  59. ' program
  60. ' program
  61.  
  62. GOSUB AUTOEXITEXAMPLE
  63.  
  64. ' program
  65. ' program
  66.  
  67. END
  68.  
  69. '---------------------------------------------------------------------------
  70. ' MULTI-FIELD SUB-ROUTINE
  71.  
  72. AUTOEXITEXAMPLE:
  73.  
  74. TOFLD% = 1: AUTOEXIT% = 0: EXIT$ = ""     ' START IN FIELD 1.  PRINT ALL
  75.                                            ' FIELDS.
  76. '----------------------------------------------------------------------------
  77. ' MAKE A WINDOW.  PRINT INSTRUCTIONS
  78.  
  79. CALL MAKEWIND(1, "@Auto-exit fields used to update a protected field", 1, 1, 80, 14, 112, 102)
  80. CALL PRINTW("Auto-exit and auto advance with numeric input", 2, 15)
  81. CALL PRINTW("+", 3, 5)
  82. CALL PRINTW("Auto-exit and auto advance with numeric input", 4, 15)
  83. CALL PRINTW("Protected Field", 6, 15)
  84. CALL PRINTW("Alpha-numeric", 8, 24)
  85. CALL PRINTW("Press F1 to end demonstration", 10, 100)
  86.  
  87. '----------------------------------------------------------------------------
  88. PREINPT:
  89. CALL MULTINPT(1, TOFLD%, EXIT$, AUTOEXIT%, RKEY%, RTRN$())
  90.  
  91. ' FIRST CHECK TO SEE IF THE EXIT WAS DUE TO FIELD 1 OR 2 BEING EXITED,
  92. ' EITHER BY THE AUTO-EXIT FEATURE OR BY THE "F1" KEY.
  93. ' ON EXIT AUTOEXIT% POINTS TO THE FIELD THE CURSOR WAS ON WHEN MULTINPT
  94. ' WAS EXITED ( IF IT WAS AN AUTOEXIT FIELD. ).  ON EXIT TOFLD% POINTS TO
  95. ' THE FIELD THE CURSOR IS MOVING TO.
  96.  
  97.  
  98. IF AUTOEXIT% = 1 OR AUTOEXIT% = 2 THEN              ' IS IT FIELD 1 OR 2 ?
  99.   RTRN$(3) = STR$(VAL(RTRN$(1)) + VAL(RTRN$(2)))      ' ADD FIELD 1 + 2
  100.   IF RTRN$(1) + RTRN$(2) = "" THEN RTRN$(3) = ""
  101.   CALL MULTINPT(1, TOFLD%, "VIEW", 3, JUNK%, RTRN$()) ' UPDATE FIELD 3 ONLY
  102. END IF
  103.  
  104. IF RKEY% <> 1 THEN                 ' WAS NOT "F1".
  105.   GOTO PREINPT                     ' CURSOR GOES TO TOFLD%.
  106. ELSE
  107.   RETURN                           ' PROGRAM WILL ALWAYS COMES HERE IF "F1"
  108. END IF                             ' IS PRESSED AS RKEY% = "F1"
  109.                                    
  110.  
  111.